macos: register known clipboard types for drag destination
authorChristian Hergert <chergert@redhat.com>
Thu, 17 Jun 2021 20:23:18 +0000 (13:23 -0700)
committerChristian Hergert <chergert@redhat.com>
Thu, 17 Jun 2021 20:23:18 +0000 (13:23 -0700)
gdk/macos/GdkMacosWindow.c
gdk/macos/gdkmacosclipboard-private.h
gdk/macos/gdkmacosclipboard.c

index 3afcdeb8268cb94cb197e2d719205a29d26f2fe7..8f3817ee6adf180e7261b53aa132241ebcd673a1 100644 (file)
@@ -28,6 +28,7 @@
 #import "GdkMacosGLView.h"
 #import "GdkMacosWindow.h"
 
+#include "gdkmacosclipboard-private.h"
 #include "gdkmacosdisplay-private.h"
 #include "gdkmacosmonitor-private.h"
 #include "gdkmacossurface-private.h"
@@ -287,6 +288,9 @@ typedef NSString *CALayerContentsGravity;
   [self setContentView:view];
   [view release];
 
+  /* TODO: We might want to make this more extensible at some point */
+  _gdk_macos_clipboard_register_drag_types (self);
+
   return self;
 }
 
index 01a562c2b8f9f7a89e01b850ade53175c79c5874..e612f73eddfa76c7914a91ae811a1fd3430c94b1 100644 (file)
@@ -40,6 +40,7 @@ void              _gdk_macos_clipboard_check_externally_modified (GdkMacosClipbo
 NSPasteboardType  _gdk_macos_clipboard_to_ns_type                (const char        *mime_type,
                                                                   NSPasteboardType  *alternate);
 const char       *_gdk_macos_clipboard_from_ns_type              (NSPasteboardType   ns_type);
+void              _gdk_macos_clipboard_register_drag_types       (NSWindow          *window);
 
 @interface GdkMacosClipboardDataProvider : NSObject <NSPasteboardItemDataProvider>
 {
index 7ddf47d83b444d8d1f580d47b496bef74ede797f..ea0d19f92349ec331cdb00c78bb8ae8707e5dbc3 100644 (file)
@@ -622,4 +622,17 @@ on_data_ready_cb (GObject      *object,
   write_request_free (wr);
 }
 
+void
+_gdk_macos_clipboard_register_drag_types (NSWindow *window)
+{
+  [window registerForDraggedTypes:[NSArray arrayWithObjects:PTYPE(STRING),
+                                                            PTYPE(PBOARD),
+                                                            PTYPE(URL),
+                                                            PTYPE(FILE_URL),
+                                                            PTYPE(COLOR),
+                                                            PTYPE(TIFF),
+                                                            PTYPE(PNG),
+                                                            nil]];
+}
+
 @end